<?php 
class pessoal_enderecoModel extends Model{
    public $tabela = "pessoal_endereco";
    public $pkey   = 'pessoal_endereco_cod';
    public $dados  = array(
        
         'pessoal_endereco_cod' => array(
	    'name'     => 'Código',
	    'type'     => 'int',
	    'size'     => '11',
	    'pkey'    => true,
	    'ai'      => true,
	    'grid'    => true,
	    'display' => true,
	    'private' => true
        ),
        
        'pessoal_pessoa_cod' => array(
	    'name'     => 'Pessoa',
	    'type'     => 'int',
	    'size'     => '11',
	    'grid'    => true,
	    'display' => true,
	    'especial' => 'session',
	    'session'  => 'pessoal/pessoa',
	    'fkey' => array(
	        'model' => 'pessoal/pessoa',
	        'cardinalidade' => '1n',
	        'keys' => array('pessoal_pessoa_cod', 'pessoal_pessoa_cod'),
	    ),
        ),
        
        'pessoal_pessoa_endereco' => array(
            'name'     => 'Endereço',
            'especial' => 'endereco',
            'endereco' => array(
                'cep'    => 'pessoal_endereco_cep', 
                'rua'    => 'pessoal_endereco_rua', 
                'bairro' => 'pessoal_endereco_bairro', 
                'cidade' => 'pessoal_endereco_cidade', 
                'estado' => 'pessoal_endereco_estado'
            )
        ),
         'pessoal_endereco_cep' => array(
	    'name'     => 'Cep',
	    'type'     => 'int',
	    'size'     => '8',
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         
         'pessoal_endereco_rua' => array(
	    'name'     => 'Rua',
	    'type'     => 'varchar',
	    'size'     => '64',
            'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
        
        'pessoal_endereco_num' => array(
	    'name'     => 'Número',
	    'type'     => 'int',
	    'size'     => '8',
            'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'pessoal_endereco_complemento' => array(
	    'name'     => 'Complemento',
	    'type'     => 'varchar',
	    'size'     => '128',
	    'grid'    => true,
	    'display' => true,
        ),
         'pessoal_endereco_bairro' => array(
	    'name'     => 'Bairro',
	    'type'     => 'varchar',
	    'size'     => '64',
            'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'pessoal_endereco_cidade' => array(
	    'name'     => 'Cidade',
	    'type'     => 'varchar',
	    'size'     => '32',
            'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'pessoal_endereco_estado' => array(
	    'name'     => 'Estado',
	    'type'     => 'enum',
	    'options' => array(
                'AC' => 'Acre', 
                'AL' => 'Alagoas', 
                'AP' => 'Amapá', 
                'AM' => 'Amazonas', 
                'BA' => 'Bahia', 
                'CE' => 'Ceará', 
                'DF' => 'Distrito Federal', 
                'ES' => 'Espírito Santo', 
                'GO' => 'Goiás', 
                'MA' => 'Maranhão', 
                'MT' => 'Mato Grosso', 
                'MS' => 'Mato Grosso do Sul', 
                'MG' => 'Minas Gerais', 
                'PR' => 'Paraná',    
                'PB' => 'Paraíba',  
                'PA' => 'Pará',  
                'PE' => 'Pernambuco',  
                'PI' => 'Piauí',  
                'RJ' => 'Rio de Janeiro',  
                'RN' => 'Rio Grande do Norte',  
                'RS' => 'Rio Grande do Sul',  
                'RO' => 'Rondonia',   
                'RR' => 'Roraima',   
                'SC' => 'Santa Catarina',   
                'SE' => 'Sergipe',   
                'SP' => 'São Paulo',   
                'TO' => 'Tocantins', 
            ),
            'notnull' => true,
	    'grid'    => true,
	    'display' => true,
             
        ),
         'pessoal_endereco_principal' => array(
	    'name'     => 'Principal',
	    'type'     => 'enum',
	    'default' => 'n',
	    'options' => array(
	    	's' => 'Sim',
	    	'n' => 'Não',
	    ),
	    'grid'    => true,
	    'display' => true,
            'description' => 'Marque sim, caso este endereço seja o principal'
        ),
	//'button'     => array('button' => 'Gravar Endereço'),
    );
    
    private $cookie = "addres";
    public function inserir($dados) {
        
        //se não tem o cep, preenche com os dados da session
        if(!isset($dados['pessoal_endereco_cep'])){
            $d = $this->getSessionAddress();
            if(!empty($d))$dados = $d;
        }
        return parent::inserir($dados);
    }
    
    public function editar($id, $post, $camp = "") {
        if(!parent::editar($id, $post, $camp)) {return false;}
        //print_r($this->getItem($id)); die();
        $this->setSessionAddress($this->post);
        return true;
    }
    
    public function getDados() {
        $dados = parent::getDados();
        $post = cookie::getVar($this->cookie);
        if(!empty($post)){
            foreach ($dados as $name => &$arr){
                if(!array_key_exists($name, $post)) continue;
                $arr['default'] = $post[$name];
            }
        }
        
        if(!isset($_SESSION['pessoal/pessoa'])){
            $dados['pessoal_pessoa_cod']['especial'] = 'hide';
            $dados['pessoal_endereco_principal']['default'] = "s";
            $dados['pessoal_endereco_principal']['especial'] = 'hidden';
        }
        return $dados;
    }
    
    private function setSessionAddress($post){
         cookie::setVar($this->cookie, $post);
    }
    
    private function getSessionAddress(){
        return cookie::getVar($this->cookie);
    }
    
    public function findAdress($cep){
        
        $out = array('uf' => "", 'cidade' => "", 'bairro' => "", 'tipo_logradouro' => "", 'logradouro' => "");
        if(!requestFromThisSite()){
            $out['resultado_txt'] = "Serviço indisponível para consulta externa de outros sites";
            $out['resultado']     = "0";
            return $out;
        }
        
        $cep = $this->antinjection($cep);
        if(strlen($cep) != 8 || !is_numeric($cep)){
            $out['resultado_txt'] = "CEP Inválido";
            $out['resultado']     = "0";
            return $out;
        }
        
        $var = $this->selecionar(
            array('pessoal_endereco_rua',
                'pessoal_endereco_bairro', 'pessoal_endereco_cidade', 'pessoal_endereco_estado'
            ),
            "pessoal_endereco_cep = '$cep'", 1
        );
        if(empty($var)){
            $out['resultado_txt'] = "CEP Não encontrado";
            $out['resultado']     = "0";
            return $out;
        }
        $var = array_shift($var);
        $temp = explode(":", $var['pessoal_endereco_rua']);
        $tipo = trim(array_shift($temp));
        $rua  = trim(implode(":", $temp));
        return array(
            'uf'              => $var['pessoal_endereco_estado'], 
            'cidade'          => $var['pessoal_endereco_cidade'], 
            'bairro'          => $var['pessoal_endereco_bairro'], 
            'tipo_logradouro' => $tipo, 
            'logradouro'      => $rua,
            'resultado_txt'   => 'sucesso - cep completo',
            'resultado'       => "1"
        );
        
    }
}
?> 